//#########################################################################
//                              WackiEngie
//           Copyright (c) 2014 Marc Wacker. All rights reserved.
//#########################################################################

#pragma once

#include "WeCorePrerequisites.h"

namespace WackiEngine
{

	typedef enum 
	{  
		NoShader = 0,
		VertexShader, 
		FragmentShader
	} ShaderType;


	class Shader
	{  
	friend class ShaderProg;

	protected:			
		ShaderType		_shaderType;
		uint32			_shaderObjectGL;
		String			_shaderSource;
		String			_shaderFile;
		String			_name;

	public:
		Shader(const String& filename, ShaderType shaderType);
		~Shader();
							  
		bool 			createAndCompile();
		void			load(const String& filename);
		void			loadFromMemory(const String& program);
		const String&	name() { return _name; }
			
	};

}